Imports CapaDeDatos
Public Class nOrdenServicio
    Private TblOrdenServicio As dOrdenServicio = New dOrdenServicio()
    Private tblPersonal As CapaDeNegocios.nPersonal = New CapaDeNegocios.nPersonal
    Private Tblunidad As CapaDeNegocios.nUnidad = New CapaDeNegocios.nUnidad
    Private TblAfectacionoperador As nAfectacionOperador = New nAfectacionOperador
    Private TblAfectacionUnidad As nAfectacionUnidad = New nAfectacionUnidad
    Private tblCliente As CapaDeNegocios.nCliente = New nCliente
    Private tblSolicitud As nSolicitudServicio = New nSolicitudServicio
    Private tblTUnidad As nTipoUnidad = New nTipoUnidad

    Public Function Insertar(ByVal FechaGeneracion As Date, ByVal Observaciones As String, ByVal estado As String, ByVal CodigoSolicitudServicios As Long) As Boolean
        Return TblOrdenServicio.Insertar(FechaGeneracion, Observaciones, estado, CodigoSolicitudServicios)
    End Function
    Public Function Listar() As DataSet
        Return TblOrdenServicio.Listar()
    End Function
    Public Function Modificar(ByVal CodigoOrdenServicio As Long, ByVal FechaGeneracion As Date, ByVal Observacion As String, ByVal estado As String, ByVal CodigoSolicitudServicios As Long) As Boolean
        Return TblOrdenServicio.Modificar(CodigoOrdenServicio, FechaGeneracion, Observacion, estado, CodigoSolicitudServicios)
    End Function
    Public Function Eliminar(ByVal CodigoOrdenServicio As String) As Boolean
        Return TblOrdenServicio.Eliminar(CodigoOrdenServicio)
    End Function
    Public Function Buscar(ByVal CodigoOrdenServicio As Long, ByVal FechaGeneracion As Date, ByVal Observacion As String, ByVal estado As String, ByVal CodigoSolicitudServicios As Long) As DataSet
        Return TblOrdenServicio.Buscar(CodigoOrdenServicio, FechaGeneracion, Observacion, estado, CodigoSolicitudServicios)
    End Function
    Public Function BuscarFiltrado(ByVal CodigoOrdenServicio As String, ByVal FechaGeneracion As String, ByVal Observaciones As String, ByVal estado As String, ByVal CodigoSolicitudServicios As String) As DataSet
        Return TblOrdenServicio.BuscarFiltrado(CodigoOrdenServicio, FechaGeneracion, Observaciones, estado, codigoSolicitudServicios)
    End Function
    Public Function BuscarDescriptivo(ByVal CodigoOrdenServicio As Long, ByVal FechaGeneracion As Date, ByVal Observacion As String, ByVal estado As String, ByVal CodigoSolicitudServicios As Long) As DataSet
        Dim dtsOrdenServicio As DataSet
        dtsOrdenServicio = TblOrdenServicio.Buscar(CodigoOrdenServicio, FechaGeneracion, Observacion, estado, CodigoSolicitudServicios)
        dtsOrdenServicio.Tables(0).Columns.Add("Unidad")
        dtsOrdenServicio.Tables(0).Columns.Add("CodigoUnidad")

        dtsOrdenServicio.Tables(0).Columns.Add("Personal")
        dtsOrdenServicio.Tables(0).Columns.Add("CodigoOperador")

        dtsOrdenServicio.Tables(0).Columns.Add("FechaAfectacion")
        dtsOrdenServicio.Tables(0).Columns.Add("FechaDesafectacion")
        Dim IdOrden As String
        Dim idPersonal As String
        Dim i As Integer
        For i = 0 To dtsOrdenServicio.Tables(0).Rows.Count - 1

            Try
                '1'obtener id del dataset principal (resultado: string, long int)

                IdOrden = dtsOrdenServicio.Tables(0).Rows(i)("CodigoOrdenServicio")

                '2'genero data set secundario y filtro con el Id obtenido arriba

                Dim dtsAfectacionUnidad As DataSet = TblAfectacionUnidad.Buscar(IdOrden, 0, New Date(), New Date())

                '3'del data set secundario saco el campo descripcion asigno a variable
                Dim idUnidad As String = dtsAfectacionUnidad.Tables(0).Rows(0)("CodigoUnidad")
                Dim dtsUnidad As DataSet = Tblunidad.Buscar(idUnidad, 0, "", "", 0, "", "", New Date(), New Date(), 0, 0)

                Dim DominioUnidad As String = dtsUnidad.Tables(0).Rows(0)("Dominio")
                Dim FechaAfectacion As String = dtsAfectacionUnidad.Tables(0).Rows(0)("AfectacionDesde").ToString
                Dim FechaDesafectacion As String = dtsAfectacionUnidad.Tables(0).Rows(0)("afectacionHasta").ToString

                '4' le asigno la variable con la descripcion a la columna que cree

                dtsOrdenServicio.Tables(0).Rows(i)("Unidad") = DominioUnidad
                dtsOrdenServicio.Tables(0).Rows(i)("CodigoUnidad") = idUnidad
                dtsOrdenServicio.Tables(0).Rows(i)("FechaAfectacion") = FechaAfectacion
                dtsOrdenServicio.Tables(0).Rows(i)("FechaDesafectacion") = FechaDesafectacion

            Catch ex As Exception
            End Try

            Try

                IdOrden = dtsOrdenServicio.Tables(0).Rows(i)("CodigoOrdenServicio")
                Dim dtsAfectacionPersonal As DataSet = TblAfectacionoperador.Buscar(IdOrden, 0, New Date(), New Date())

                idPersonal = dtsAfectacionPersonal.Tables(0).Rows(0)("Legajo")
                Dim dtsPersonal As DataSet = tblPersonal.ListarNombres(idPersonal, "")
                Dim nombrePersonal As String = dtsPersonal.Tables(0).Rows(0)("NombreApellido")


                dtsOrdenServicio.Tables(0).Rows(i)("Personal") = nombrePersonal
                dtsOrdenServicio.Tables(0).Rows(i)("CodigoOperador") = idPersonal
            Catch ex As Exception
            End Try

        Next
        Return dtsOrdenServicio
    End Function

    Public Function ClienteSolicitud(ByVal CodigoSolicitud As Long) As String
        Dim cliente As String = ""
        Try
            Dim dtsSolicitud As DataSet
            dtsSolicitud = tblSolicitud.BuscarFiltrado(CodigoSolicitud, New Date(), New Date(), "", 0, "", 0)

            cliente = tblCliente.Listar(dtsSolicitud.Tables(0).Rows(0)("CodigoCliente").ToString, "", "", "", "", "", "", "", "", "", "", "").Tables(0).Rows(0)("RazonSocial").ToString
        Catch ex As Exception
        End Try
        Return cliente
    End Function

    Public Function OrdenCliente(ByVal CodigoCliente As Long, ByVal estado As String) As DataSet
        '...Aca se modifico, el codigo dts abajo no estan filtradas por estados las solicitudes
        Dim dtsSolicitud As DataSet = tblSolicitud.BuscarFiltrado(0, (New Date), (New Date), "", CodigoCliente, "", 0)
        Dim i As Integer
        Dim Cliente As String
        Dim dtsOrdenes As DataSet
        dtsOrdenes = TblOrdenServicio.Buscar(-1, New Date(), "", "", 0)
        dtsOrdenes.Tables(0).Columns.Add("Unidad")
        dtsOrdenes.Tables(0).Columns.Add("CodigoTUnidad")
        dtsOrdenes.Tables(0).Columns.Add("Cliente")
        dtsOrdenes.Tables(0).Columns.Add("estado")
        Cliente = tblCliente.Listar(CodigoCliente, "", "", "", "", "", "", "", "", "", "", "").Tables(0).Rows(0)("RazonSocial")
        For i = 0 To dtsSolicitud.Tables(0).Rows.Count - 1
            '.. aca el dts temporal filtra las ordenes con estado  desdes el POPUP
            Dim dtsOrdenesTemp As DataSet = TblOrdenServicio.Buscar(0, New Date(), "", estado, dtsSolicitud.Tables(0).Rows(i)("CodigoSolicitudServicios"))
            If dtsOrdenesTemp.Tables(0).Rows.Count > 0 Then
                If ((dtsOrdenes.Tables(0).Select("CodigoOrdenServicio= " + dtsOrdenesTemp.Tables(0).Rows(0)(0).ToString)).Length = 0) Then
                    Dim row As DataRow
                    row = dtsOrdenes.Tables(0).NewRow
                    row("CodigoOrdenServicio") = dtsOrdenesTemp.Tables(0).Rows(0)("CodigoOrdenServicio")
                    row("FechaGeneracion") = dtsOrdenesTemp.Tables(0).Rows(0)("FechaGeneracion")
                    row("Observacion") = dtsOrdenesTemp.Tables(0).Rows(0)("Observacion")
                    row("Estado") = dtsOrdenesTemp.Tables(0).Rows(0)("Estado")
                    row("CodigoSolicitudServicios") = dtsOrdenesTemp.Tables(0).Rows(0)("CodigoSolicitudServicios")
                    row("Cliente") = Cliente
                    row("estado") = estado
                    Try
                        Dim dtsTUnidad As DataSet
                        dtsTUnidad = tblTUnidad.Buscar(Convert.ToInt32(dtsSolicitud.Tables(0).Rows(i)("CodigoTUnidad")), "", 1)
                        row("Unidad") = dtsTUnidad.Tables(0).Rows(0)("Descripcion")
                        row("CodigoTUnidad") = dtsTUnidad.Tables(0).Rows(0)("CodigoTUnidad")
                    Catch ex As Exception

                    End Try
                    dtsOrdenes.Tables(0).Rows.Add(row)
                End If
            End If
        Next
        Return dtsOrdenes
    End Function
    Public Function DesafectacionUnidadOperador(ByVal Cliente As Integer) As DataSet
        Dim i As Integer
        Dim dtsOrdenServicio As New DataSet
        dtsOrdenServicio.Tables.Add("asd")
        dtsOrdenServicio.Tables(0).Columns.Add("CodigoOrdenServicio")
        dtsOrdenServicio.Tables(0).Columns.Add("Unidad")
        dtsOrdenServicio.Tables(0).Columns.Add("Dominio")
        dtsOrdenServicio.Tables(0).Columns.Add("Nombre")
        dtsOrdenServicio.Tables(0).Columns.Add("Legajo")
        dtsOrdenServicio.Tables(0).Columns.Add("CodigoSolicitud")
        dtsOrdenServicio.Tables(0).Columns.Add("Cliente")
        dtsOrdenServicio.Tables(0).Columns.Add("FechaAfectacion")
        Dim FechaAfectacion As String
        '..busco el nombre del cliente
        Dim RazonSocial As String = tblCliente.Listar(Cliente, "", "", "", "", "", "", "", "", "", "", "").Tables(0).Rows(0)("RazonSocial")

        '----------buscar la Solicitud con el cliente con el estado cumplida
        Dim dtsSolicitudServicio As New DataSet
        ' dtsSolicitudServicio = tblSolicitud.BuscarFiltrado(0, New Date, New Date, "", Cliente, "Cumplida", 0)
        If Not (tblSolicitud.BuscarFiltrado(0, New Date, New Date, "", Cliente, "", 0).Tables(0).Rows.Count >= 1) Then
            Return dtsOrdenServicio
        Else
            dtsSolicitudServicio = tblSolicitud.BuscarFiltrado(0, New Date, New Date, "", Cliente, "", 0)
            Dim idCodigoSolicitud As Integer
            Dim dtsaux As DataSet
            Dim IdOrdenServicio As Integer
            Dim Legajo As String
            Dim nombre As String
            Dim Unidad As Long
            Dim Dominio As String
            Dim Row As DataRow

            For i = 0 To dtsSolicitudServicio.Tables(0).Rows.Count - 1
                idCodigoSolicitud = dtsSolicitudServicio.Tables(0).Rows(i)("CodigoSolicitudServicios")
                dtsaux = TblOrdenServicio.BuscarFiltrado("", "", "", "", idCodigoSolicitud)
                If dtsaux.Tables(0).Rows.Count > 0 Then
                    IdOrdenServicio = dtsaux.Tables(0).Rows(0)("CodigoOrdenServicio")

                    '                Dim IdOrdenServicio As Integer = TblOrdenServicio.BuscarFiltrado("", "", "", "", idCodigoSolicitud).Tables(0).Rows(0)("CodigoOrdenServicio")
                    '--------buscar operador
                    '..nueva funcion operadores afectados...
                    If TblAfectacionoperador.OperadoresAfectados(IdOrdenServicio, 0, New Date, New Date).Tables(0).Rows.Count >= 1 Then
                        Legajo = TblAfectacionoperador.OperadoresAfectados(IdOrdenServicio, 0, New Date, New Date).Tables(0).Rows(0)("legajo").ToString()
                        nombre = tblPersonal.ListarNombres(Legajo, "").Tables(0).Rows(0)("NombreApellido").ToString()
                        FechaAfectacion = TblAfectacionoperador.Buscar(IdOrdenServicio, 0, New Date, New Date).Tables(0).Rows(0)("AfectacionDesde").ToString()

                        Unidad = TblAfectacionUnidad.UnidadesAfectadas(IdOrdenServicio, 0, New Date, New Date).Tables(0).Rows(0)("codigoUnidad")

                        Dominio = Tblunidad.Buscar(Unidad, 0, "", "", 0, "", "", New Date, New Date, 0, 0).Tables(0).Rows(0)("Dominio")
                        Row = dtsOrdenServicio.Tables(0).NewRow()
                        Row("nombre") = nombre
                        Row("Dominio") = Dominio
                        Row("Unidad") = Unidad
                        Row("Legajo") = Legajo
                        Row("cliente") = RazonSocial
                        Row("FechaAfectacion") = FechaAfectacion
                        Row("CodigoOrdenServicio") = IdOrdenServicio
                        Row("CodigoSolicitud") = idCodigoSolicitud
                        dtsOrdenServicio.Tables(0).Rows.Add(Row)
                        ''''''''''Else
                        '..Manda el dataset vacio
                        ''''''''''Return dtsOrdenServicio
                        'Dim Row1 As DataRow
                        'Row1 = dtsOrdenServicio.Tables(0).NewRow()
                        'Row1("nombre") = "S/datos"
                        'Row1("Dominio") = "S/datos"
                        'Row1("Unidad") = 0
                        'Row1("Legajo") = "S/datos"
                        'Row1("cliente") = "S/datos"
                        'Row1("FechaAfectacion") = New Date
                        'Row1("CodigoOrdenServicio") = 0
                        'Row1("CodigoSolicitud") = 0
                        'dtsOrdenServicio.Tables(0).Rows.Add(Row1)
                    End If
                End If

            Next
        End If
        '----------mandar el dataset
        Return dtsOrdenServicio
    End Function
    Public Sub Desafectar(ByVal FechaDesafectacion As Date, ByVal OrdenServicio As Integer, ByVal Legajo As Integer, ByVal Unidad As Integer)
        TblAfectacionoperador.Modificar(OrdenServicio, Legajo, New Date, FechaDesafectacion)
        TblAfectacionUnidad.Modificar(OrdenServicio, Unidad, New Date, FechaDesafectacion)
        TblOrdenServicio.Modificar(OrdenServicio, New Date, "", "Finalizada", 0)
    End Sub
End Class
